package com.ruoyi.system.domain;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 推送任务对象 tb_task
 *
 * @author ruoyi
 * @date 2025-07-23
 */
@Data
@Schema(description = "推送任务对象")
public class TbTask extends BaseEntity {
    private static final long serialVersionUID = 1L;


    /** 自增主键 */
    private Long id;

    /** 任务名称 */
    @Excel(name = "任务名称")
    @Schema(description = "任务名称")
    private String taskName;

    /** 任务状态(0=禁用 1=初始化 2=执行中 3=暂停 4=完成 5=失败) */
    @Excel(name = "任务状态(0=禁用 1=初始化 2=执行中 3=暂停 4=完成 5=失败)")
    @Schema(description = "任务状态(0=禁用 1=初始化 2=执行中 3=暂停 4=完成 5=失败)")
    private Integer taskStatus;

    /** 任务登记时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "任务登记时间", width = 30, dateFormat = "yyyy-MM-dd")
    @Schema(description = "任务登记时间")
    private Date registrationTime;

    /** 任务开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "任务开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @Schema(description = "任务开始时间")
    private Date taskStartTime;

    /** 任务结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "任务结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    @Schema(description = "任务结束时间")
    private Date taskStopTime;

    /** 任务目标描述 */
    @Excel(name = "任务目标描述")
    @Schema(description = "任务目标描述")
    private String taskTargetDesc;

    /** 任务执行进度(0-100) */
    @Excel(name = "任务执行进度(0-100)")
    @Schema(description = "任务执行进度(0-100)")
    private Double taskProgress;

    /** 任务优先级(1=高 2=中 3=低) */
    @Schema(description = "任务优先级(1=高 2=中 3=低)")
    @Excel(name = "任务优先级(1=高 2=中 3=低)")
    private Integer taskPriority;

    /** 强制退出应用并更新(0=否 1=是) */
    @Excel(name = "强制退出应用并更新(0=否 1=是)")
    @Schema(description = "强制退出应用并更新(0=否 1=是)")
    private Integer forceQuitApp;

    /** 不兼容设备更新(0=否 1=是) */
    @Excel(name = "不兼容设备更新(0=否 1=是)")
    @Schema(description = "不兼容设备更新(0=否 1=是)")
    private Integer updateIncompatible;

    /** 安装失败自动重试(0=否 1=是) */
    @Schema(description = "安装失败自动重试(0=否 1=是)")
    @Excel(name = "安装失败自动重试(0=否 1=是)")
    private Integer autoRetry;

    /** 覆盖设备已有版本(0=否 1=是) */
    @Excel(name = "覆盖设备已有版本(0=否 1=是)")
    @Schema(description = "覆盖设备已有版本(0=否 1=是)")
    private Integer overwriteExist;

    /** 推送类型(1=立即推送 2=定时推送) */
    @Excel(name = "推送类型(1=立即推送 2=定时推送)")
    @Schema(description = "推送类型(1=立即推送 2=定时推送)")
    private Integer pushType ;

    /** 定时推送时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "定时推送时间", width = 30, dateFormat = "yyyy-MM-dd")
    @Schema(description = "定时推送时间")
    private Date scheduledPushTime;

    /** 推送重试次数 */
    @Excel(name = "推送重试次数")
    @Schema(description = "推送重试次数")
    private Integer pushRetryTimes;

    /** 推送间隔(分钟) */
    @Excel(name = "推送间隔(分钟)")
    @Schema(description = "推送间隔(分钟)")
    private Integer pushInterval;

    /** 错误信息 */
    @Excel(name = "错误信息")
    @Schema(description = "错误信息")
    private String errorMessage;


}
